Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless communication devices such as radio telephone handsets, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, digital cameras, digital recording devices, video gaming devices, video game consoles, and the like. Digital video devices implement video compression techniques, such as MPEG-2, MPEG-4, or H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), to transmit and receive digital video more efficiently. Video compression techniques perform spatial and temporal prediction to reduce or remove redundancy inherent in video sequences.
In video coding, video compression generally includes spatial prediction, motion estimation and motion compensation. Intra-coding relies on spatial prediction to reduce or remove spatial redundancy between video blocks within a given video frame. Inter-coding relies on temporal prediction to reduce or remove temporal redundancy between video blocks of successive video frames of a video sequence. For inter-coding, a video encoder performs motion estimation to track the movement of matching video blocks between two or more adjacent frames. Motion estimation generates motion vectors, which indicate the displacement of video blocks relative to corresponding prediction video blocks in one or more reference frames. Motion compensation uses the motion vectors to generate the prediction videos block from the reference frames. After motion compensation, a given residual video block is formed by subtracting the prediction video block from the original video block to be coded.
The video encoder may apply transform, quantization and entropy coding processes to further reduce the bit rate associated with communication of the residual block. Transform techniques may comprise discrete cosine transforms or a conceptually similar process, wavelet transforms, or possibly other types of transforms. In discrete cosine transforms or conceptually similar processes, the transform process changes a set of pixel values into transform coefficients, which represent the energy of the pixel values in the frequency domain. Quantization is applied to the transform coefficients, and generally involves a process that limits the number of bits associated with any given coefficient. Entropy coding comprises one or more processes that collectively compress a sequence of quantized transform coefficients. Examples of entropy coding processes include content adaptive variable length coding (CAVLC) and context adaptive binary arithmetic coding (CABAC).
CAVLC is one type of entropy coding technique supported by the ITU H.264/MPEG4, AVC standard. CAVLC uses variable length coding (VLC) tables in a manner that effectively compresses serialized “runs” of transform coefficients. CABAC is another type of entropy coding technique supported by the ITU H.264/MPEG4, AVC standard. CABAC may involve several stages, including binarization, context model selection, and binary arithmetic coding. Many other types of entropy coding techniques also exist, and new entropy coding techniques will likely emerge in the future.
Regardless of the type of entropy coding used in the encoding process, a video decoder may perform inverse entropy coding operations to reconstruct the coefficients. The video decoder then inverse quantizes and inverse transforms the coefficients. The video decoder may decode the video information based on the motion information and residual information associated with video blocks in order to generate a decoded sequence of video information.